Personal data processing systems in general and IBM personal computers in particular have attained widespread use for providing computer power to many segments of today's modern society. Personal data processing systems can usually be defined as a desk top, floor standing, or portable microcomputer that consists of a system unit having a system processor or processors and associated volatile and non-volatile memory, a display monitor, a keyboard, one or more diskette drives, a fixed disk storage, and an optional printer. One of the distinguishing characteristics of these systems is the use of a motherboard or system planar to connect these components together. These systems are designed primarily to give independent computing power to a single user and are inexpensively priced for purchase by individuals or small businesses. Examples of such personal data processing systems are IBM's PERSONAL COMPUTER AT and IBM's PERSONAL SYSTEM/2 Models 25, 30, L40SX, 50, 55, 65, 70, 80, 90 and 95. (PERSONAL SYSTEM/2 and IBM are trademarks of International Business Machines Corporation.)
Personal data processing systems utilize memory in the form of Random Access Memory (RAM) as a relatively inexpensive and fast storage device for use in conjunction with central processing unit operations. During the operation of a data processing system, an operating system program is loaded into the RAM. The operating system manages the components or subsystems of the computer, processes commands, and controls programs. In addition to the operating system, the RAM contains data and application programs that have been loaded during the operation of the computer. When electrical power to the computer is switched off, the contents of the RAM vanishes.
Personal data processing systems typically include a memory device such as Read Only Memory (ROM) on which "bootstrap" information is stored. The bootstrap information commonly includes data for conducting an internal test of the data processing system and for initially configuring the data processing system and its many subsystems such as the RAM, hard and floppy disk drives, and video adapters. The bootstrap information also includes code for loading operating systems software, such as OS/2, into the system from a device or subsystem (such as a hard disk drive). (OS/2 is a trademark of International Business Machines Corporation.) Furthermore, the bootstrap information may include code for configuring the subsystems. This bootstrap information is stored in non-volatile memory so that the data is retained in the memory device when power is removed from the data processing system. When power is applied to the data processing system, the bootstrap information is automatically loaded into the processing parts of the data processing system.
In operation, upon startup, the data processing system loads the bootstrap information. The bootstrap information instructs the data processing system to perform a power-on self test ("POST") to make sure that the various subsystems are working properly. The bootstrap information also instructs the data processing system to configure itself and any peripheral units coupled to the data processing system, thereby initializing the data processing system. Finally, the bootstrap information instructs the data processing system to load operating system software into the RAM in an Initial Program Load (IPL) sequence. The loaded operating system enables the data processing system to run other software applications.
Typically, when ROM is used as a source of bootstrap information, the bootstrap information is unalterably fixed into the ROM during manufacture. One type of prior art data processing system relies on the ROM as the exclusive source of the bootstrap information. However, data processing systems may have applications or peripheral devices that require additional or modified bootstrap information. These applications or peripheral devices have generally required the data processing system to first bootstrap itself using the unalterable bootstrap information in ROM. Then, the configuring data or other parameters are changed with software routines available after the operating system has been loaded into the data processing system. This is a cumbersome and inflexible process.
Other prior art data processing systems have allowed a minor amount of flexibility in the loading of bootstrap information by providing a second nonvolatile memory device upon which bootstrap information may be written and erased. The second memory device, which is alterable, works in combination with the unalterable memory device to provide the bootstrap information necessary to initialize the data processing system for use. The unalterable memory device provides the initial bootstrap information, which provides sufficient information to enable the data processing system to read a second level of user configurable bootstrap information from the second memory device. Typically the unalterable memory device is a ROM device and the second memory device is an Erasable Programmable Read Only Memory (EPROM) device. However, the flexibility of using dual ROM memory sources is limited because only a relatively limited amount of user configurable code may be written on the second memory device. In addition, an EPROM device is alterable only with difficulty. The EPROM device must first be exposed to ultraviolet light to erase or clear the memory. Then, the new information is loaded in.
Another prior art method (referred to as the INIT program method) also allows some flexibility in manipulation of the bootstrap information by driving a very small portion of a disk storage device with the information from the unalterable bootstrap memory device. A very small, perhaps one or two sectors (512 bytes per sector) worth of information, are stored on track zero of the fixed disk. This is the same track that typically contains the boot record for the disk. The bootstrap information contained in the ROM or the EPROM directs the data processing system to read one or two disk sectors of the disk storage device. The disk sectors contain additional bootstrap information that may be configured by a data processing system user. However, the bootstrap information that is stored in these disk sectors cannot be protected from being overwritten. Furthermore, no access is provided to a file system because an operating system has not been loaded.
One problem with the prior art initialization schemes is that the amount of nonvolatile storage available for the bootstrap information is limited. The test and initialization processes required to bootstrap a data processing system are ever increasing in size and complexity. It is becoming prohibitive to include all the required test and initialization code in the ROM memory devices typically used to store bootstrap information, or in the limited disk space accessible to the data processing system prior to IPL. For example, high function adapters (such as video adapters) for interfacing peripherals with the data processing system may contain microprocessors having a large memory requiring a large, loadable code base that must be loaded from the bootstrap information in order to configure the adapter and the peripheral. The test and initialization processes must be completed before the IPL loads the operating system into the data processing system because the operating system relies on the subsystems having been tested and initialized prior to the IPL.
Another problem with prior art initialization schemes is that the software that performs the initialization on the extended high function subsystems requires access to a file subsystem on a storage device. Access to a file system is required in order to retrieve the data and control files necessary for the initialization. However, access to a file system is not provided before an operating system has been loaded onto the data processing system.
Therefore, what is desired is a dynamically extendible initialization and POST mechanism which allows for flexible and independent activities to be performed before the IPL phase, and which has access to a file system so as to be able to retrieve data and control files necessary to completely test and initialize the data processing system and its subsystems.